package com.mybatis.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.io.Serializable;
import java.util.List;

public interface MyCrudDao <T> {
    int insert(T var);
    int deleteById(Serializable var);
    int updateByEntity(T var);
    int updateByWholeEntity(T var);
    T getEntityById(Serializable var);
    Long getEntityCount();
    <V> V getValueById(@Param("id") Object pk, @Param("fieldName") String fieldName);
    int insertBatch(List<T> var1);
    int deleteBatch(List<Long> var);
    int replaceBatch(List<T> var1);
    Page<T> getEntityListForPage(Pageable var1);

    <C> List<T> getEntityList(C criteria);
}
